package com.geovis.emergency.spd.entity.pc.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.geovis.emergency.spd.entity.basic.entity.BaseSpdEntity;
import com.geovis.emergency.spd.entity.pc.handler.JsonTypeHandler;
import com.geovis.emergency.spd.entity.pc.handler.PgObjectJsonSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * <p>
 * 应急预案指挥模块-演练灾害事件消息表
 * </p>
 *
 * @author Lonsho
 * @since 2022-06-08
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("pc_drill_disaster_event")
@ApiModel(value="PcDrillDisasterEvent对象", description="应急预案指挥模块-演练灾害事件表")
public class PcDrillDisasterEvent extends BaseSpdEntity {

    @ApiModelProperty(value = "灾害id")
    private String pcDisasterId;

    @ApiModelProperty(value = "灾害事件消息id/值班值守的事件id")
    private String pcDisasterEventId;

    @ApiModelProperty(value = "演练id")
    private String pcDrillId;

    @ApiModelProperty(value = "演练灾害id")
    private String pcDrillDisasterId;

    @ApiModelProperty(value = "标题")
    private String title;

    @ApiModelProperty(value = "来源")
    private String source;

    @ApiModelProperty(value = "内容")
    private String content;

    @ApiModelProperty(value = "地点")
    private String address;

    @ApiModelProperty(value = "geometry")
    @TableField(typeHandler = JsonTypeHandler.class)
    @JsonSerialize(using = PgObjectJsonSerializer.class)
    private Object geometry;

    @ApiModelProperty(value = "经度")
    private String longitude;

    @ApiModelProperty(value = "纬度")
    private String latitude;

    @ApiModelProperty(value = "类型")
    private String type;

    @ApiModelProperty(value = "等级")
    private String level;

    @ApiModelProperty("事件阶段（1-灾前，2-灾中，3-灾后）")
    private String eventStage;

    @ApiModelProperty(value = "报送时间")
    private LocalDateTime submitTime;

    @ApiModelProperty(value = "实际报送时间")
    private LocalDateTime actualSubmitTime;

    @ApiModelProperty(value = "响应类型(1-响应消息，2-广播消息)")
    private String responseType;

    @ApiModelProperty(value = "响应动作")
    private String responseAction;

    @ApiModelProperty(value = "状态（1-待下发，2-进行中，3-已完成）")
    private String status;

    @ApiModelProperty(value = "来源类型（1-配置库，2-事件上报续报，3-事件上报新增）")
    private String sourceType;

    @ApiModelProperty(value = "台风点位id")
    private String typhoonPointId;


    @ApiModelProperty(value = "爆炸半径（米）")
    private String explosionRadius;

    @ApiModelProperty(value = "影响半径（米）")
    private String influenceRadius;

    @ApiModelProperty(value = "预案id")
    private String pcPlanId;

    @ApiModelProperty(value = "所属区域（行政区划编码）")
    @TableField(fill = FieldFill.INSERT)
    private String regionCode;

    @ApiModelProperty(value = "科大推送id",hidden = true)
    private String pushId;

    @ApiModelProperty("指挥调度事件Id")
    private String schedulingEventId;

}
